Amazon GameLiftのUnreal Engine用プラグインがリリースされたので実際に触ってみた
こんにちは、ゲームソリューション部の入井です。
先月、AWSよりAmazon GameLiftのUnreal Engine用のプラグインが発表されました。
Integrating games with the Amazon GameLift plugin for Unreal Engine - Amazon GameLift
このプラグインを使うことで、GameLiftサーバーの構築や、ゲームサーバーのGameLiftへのデプロイといった操作をUnreal Engineのエディタ上からできるようになります。
また、このプラグインにはUnreal Engine向けのGameLiftサーバーSDKや、クライアント用のC++ライブラリも含まれており、導入することでGameLift向けのゲームクライアント・サーバー開発も行えるようになります。
細かな環境の調整などにはAWS CLIが必要ですが、基本的にはこのプラグインだけでUnreal Engine x GameLiftでの開発・デプロイを完結可能になるようです。
プラグインが対応しているUnreal Engineのバージョンについては、現時点では5.0~5.2と記載されています。
なお、このプラグインはGitHubリポジトリでソースが公開されています。
プラグインの導入手順
公式ドキュメントを参考にプラグインの導入を進めていきます。
Install the plugin for Unreal - Amazon GameLift
このプラグインは、一般的なUEのプラグインと比較すると導入までに必要な手順が多くなっています。
基本的な手順は上記の公式ドキュメントに記載されていますが、要点や注意点等を以下に記載していきます。
ソースからビルドしたUnreal Engineの用意
まず、このプラグインは公式のインストーラから導入したUnreal Engineでは使用できないため、ソースからビルドしたUnreal Engineを用意する必要があります。
Unreal EngineのソースはGitHubでOSSとして公開されていますが、リポジトリへアクセスするにはEpic GameのOrganizationに参加する必要があります。
Organizationへの参加にはEpic Gamesアカウントを所持していること以外に条件はありません。以下のサイトに具体的な記述されていますので参考にしてください。
UEのビルド手順は公式ドキュメント等で解説されていますが、有志のブログ記事もいくつか書かれています。私は以下の記事の内容を参考にさせていただきました。
なお、UEのデータサイズは100GB以上ある上、ビルドにもかなり時間がかかるためご注意ください。スペックにもよると思いますが、私のPC(Core i7-12700H, 32GB RAM)の場合は1.5時間程度かかりました。
また、ソースを保存しているディレクトリのパスが長すぎるとビルドに失敗することも注意が必要です。Cドライブ直下など、できるだけパスが短くなる場所に保存することをおすすめします。私はビルドの失敗の原因がこれと気づくまでに数時間を費やしました。
プラグインを導入したプロジェクトのビルド
続いて、プラグインの導入を進めていきます。こちらについても、細かな手順はGameLiftのドキュメントに記載されています。GitHubのリポジトリからプラグインをダウンロードし、それを導入対象のUEプロジェクトのディレクトリへ保存し、最後にプロジェクトのビルドを実行するというのが基本的な流れです。
Install the plugin for Unreal - Amazon GameLift
導入対象のUEプロジェクトは、BluePrintではなくC++プロジェクトにする必要がある点にご注意ください。
また、プロジェクトのビルドにも長めの時間がかかり、私の場合は1時間程度待つことになりました。
UEエディタでの動作確認
プラグインを導入してのビルドが無事に完了した後、Unreal Engineでプロジェクトを開くと以下の画像のように上部メニューにプラグイン用のボタンが追加されます。
基本的に、プラグインの機能にはこのボタンからアクセスすることになります。
プラグインの機能
ここからは、プラグインの各機能について簡単に紹介していきます。
プロフィールの設定
GameLiftへアクセスするために使用するIAMユーザーの設定を行います。IAMユーザーの認証には、アクセスキーとシークレットキーを使用します。
適切なキーを入力した上で「Bootstrap and update profile」をクリックすると、指定したリージョンのS3に専用のバケットが作成されます。このバケットは、プロジェクト構成やビルド成果物等を保存するために使用されます。
上記のような操作を行う関係上、使用するIAMユーザーはGameLiftだけでなくS3の読み書きの権限を持っている必要があります。
GameLift Anywhereへのデプロイ
Unreal Engineでビルドしたサーバーのデプロイ先としては2種類用意されており、そのうちの1つがGameLift Anywhereへのデプロイです。
GameLift Anywhereは昨年発表された新しめの機能で、オンプレミスサーバーをGameLiftのホストとして指定することができる機能です。
このプラグインでは、ローカルネットワーク内の任意のマシンをホストとして指定することが可能で、例えばUnreal Engineを起動しているPC自体をホストにし、サーバーとクライアントを同一のPCで実行することもできます。
EC2フリートへのデプロイ
サーバーのデプロイ先として、Amazon EC2のフリートを指定することも可能です。
デプロイ先の環境として、以下の3つを選択できるようになっています。
- 単一リージョンフリート
- その名の通り単一のフリートにサーバーをデプロイします。
- 主にテストの用途で使用します。
- スポットフリート
- 複数のロケーションで実行される3つのフリートにサーバーをデプロイします。
- 1つはバックアップ用
- 実稼働、あるいはそれに近い環境にデプロイしたい時に使用します。
- 複数のロケーションで実行される3つのフリートにサーバーをデプロイします。
- FlexMatchフリート
- スポットフリート同様複数のフリートにサーバーをデプロイするとともに、FlexMatchのセットアップも行います。
実際のデプロイ時はEC2やGameLiftだけでなく、CognitoやDynamoDB等の環境も必要に応じて作成されます。これは、プレイヤーの認証やゲームセッションやマッチメイキング情報の保存などに使用されます。
まとめ
Unreal Engine用のGameLiftプラグインについて簡単に概要を説明しました。
このプラグインを使用することで、Unreal Engineで開発しているゲームでのGameLiftの活用手順がかなり簡略化されます。
公式ドキュメントの手順に従うことで、下記画像のような手元でのマルチプレイの検証が可能となります。こちらの具体的手順については、また別途記事を作成して紹介したいと思います。